#pragma once
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "../server/api.hpp"
typedef struct sockaddr sockaddr;
typedef struct sockaddr_in sockaddr_in;

namespace client{

class ChatClient{
public:
  //客户端初始化，主要是初始化socket
  int Init(const std::string& server_ip,short port);
  //设置用户信息，姓名和学校
  //客户端启动时提示输入昵称和学校，从标准输入读取传给该函数
  int SetUserInfo(const std::string& name,const std::string& school);
  //发送消息
  void SendMsg(const std::string& msg);
  //接收消息
  void RecvMsg(server::Data* data);
private:
  int _sock;//和服务器进行通信的文件描述符，通过Init创建好，交给SendMsg和RecvMsg直接使用
  sockaddr_in server_addr;//保存服务器的地址，用来接收和发送消息
  std::string _name;
  std::string _school;
};
}
